iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0

BeforeAll、BeforeEach、AfterEach、AfterAll

的四個生命週期,這四個牽扯到一個重點scope(範疇),每一隻測試檔案都有local與global的範圍,因此當我們做測試時,是否會更改global的範圍進而影響到別的測試案例.先舉個例:

https://ithelp.ithome.com.tw/upload/images/20210920/20120076kF1dVVJuZT.png

當我們看到這個簡單的案例,會知道我們在最外面放一個全域的物件,當我們執行第一個測試案例時,他會更改我們name key的value所以導致我們在執行第二次測試案例時印出來的log會是第一個測試案例更改後的值,這會造成之後的測試案例出錯.log如下

https://ithelp.ithome.com.tw/upload/images/20210919/20120076TTV8WMCv39.png


所以這時候就需要我們的beforeAll、beforeEach、afterEach、afterAll執行順序為

  1. BeforeAll
  2. BeforeEach → 每個test case 前都會執行一次
  3. AfterEach → 每個test case 後都會執行一次
  4. AfterAll

這簡單案例,我就先用AfterEach來修正剛剛的錯誤.

https://ithelp.ithome.com.tw/upload/images/20210920/20120076zgJ6geF3dn.png

我在afterEach執行恢復原始狀態

https://ithelp.ithome.com.tw/upload/images/20210919/201200763PpN9zpjP0.png

因此我們可以透過這四個生命週期,來阻止對於模組的污染.


上一篇
Day 3 我要開始Mock了
下一篇
Day 5 hook的前奏 useState
系列文
我不會測試,所以寫Jest與React Testing Library30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言